Color image devices have become quite common, not only in televisions and computers CRT displays, but also in color printers such as ink jet printers. Color data operations and manipulations vary widely between the different types of color imaging devices. To ensure a quality color image, different approaches to color rendering are required based on the physics and operating characteristics of the device being characterized, and different imaging technologies utilize different primary colors. For example, devices which emit light to create color (e.g., televisions and CRT displays) use the additive color mixing primaries red, green, and blue ("RGB") to create all of the colors within their color gamut (i.e., the range of all displayable colors). In addition, devices which use reflected light to create color (e.g., printers) use the subtractive color mixing primaries cyan, magenta, and yellow (CMY) to obtain a wide gamut (in this case, the range of all printable colors) of colors. For an RGB image displayed on a CRT to look as good as a CMY print made by a color ink jet printer, a color conversion is required to convert the RGB input data to CMY output data. Oftentimes, conventional color data transformations required for the color conversion are mathematically and/or computationally complex.
It is common to refer to the gamut of colors associated with an imaging device as a "color space." The color space associated with digital color imaging devices is generally specified as a three-dimensional entity (because the human visual system is trichromatic). The coordinates of a color space can vary from input RGB data, to output CMY data, or to coordinate systems which mimic the response of the human visual system. The most common of these coordinate systems is CIELAB, which utilizes three coordinates (L*, a*, and b*) to characterize any color. The L* coordinate represents the lightness of a color. L* values range from 0 to 100, where zero (0) represents black and 100 represents white. The second coordinate, a*, represent the redness or greenness of a color. An a* value of zero (0) corresponds to a color that is neutral between red and green. A positive a* value represent a redish color while a negative a* is greenish. The third coordinate, b*, is similar to a*, except that it represents a tradeoff between yellowness and blueness, rather than redness and greenness.
Developers of today's color imaging systems commonly transform color information between many color spaces in the process of characterizing a printing or displaying device. Generally, the mathematical manipulation of color information is performed in a so-called "device independent color" space, such as CIELAB, to ensure that the operations are being performed in a way consistent with the way in which people see. The original data can be considered as existing in an "input color space" and, after the data transformation, the color space can be called an "output color space."
In situations where one type of physical device (such as a color monitor) has received a set of color data that corresponds to its format, and then that color data is desired to be utilized with a different type of physical device (such as a color printer), then it will be obvious that the color gamut will have to be significantly modified when transforming the color data from one format to the other. In other situations, a color space may be defined for a particular type of physical device (such as a color printer), however, improvements are desired for certain portions of the color space, and again, a transformation is required to create a new look-up table of colors to be used with the physical output for the device of interest. In general, a "warping" or "morphing" algorithm is used to transform either two-dimensional or three-dimensional data to create the new, improved color space. Such warping/morphing algorithms have been used in the past, with varied results.
One standard approach is known as "polynomial warping" which has certain drawbacks. For example, polynomial warping requires inversion of a large ill conditioned matrix which is numerically and computationally impossible due to the size of the matrix and floating point precision problems. In addition, if a "training point" (a point that is hand-picked by the color space system designer to have a certain input coordinate and a certain corresponding output coordinate) also happens to be an "input point" (i.e., a point in the input color space that will be transformed into the output color space), then the output point corresponding to that input point is generally not exactly defined by that training point. Furthermore, the effects of a training point are not localized to that training point within the color space, and in fact can have a significant effect over the entire transformed output color space.
Another standard approach is known as an inverse distance interpolation (also known as "Shephard's Method"). In the inverse distance interpolation method, if the training points are "do nothing" training points, the transform does not degenerate into an identity transform, in that the transform will actually modify the non-training point even though the training points are such that input equals output. Moreover, the effects of a training point are not generally localized to that training point.
Other conventional methods for modifying color space have been patented, including U.S. Pat. No. 5,289,295 (by Yumiba), which discloses a color adjustment apparatus that includes a color space conversion circuit that obtains a chromaticity signal in a rectangular coordinate system of a plane representing hue and saturation components. Instead of using the uniform color space expression of color, L*a*b*, this Yumiba invention uses the CIE 1976 uniform observer color space coordinates, L*u*v*. Using a two-dimension coordinate system, the "original chromaticity signal" having the values (u*, v*) are converted to a "corrected chromaticity signal" called (u.sub.0 *, v.sub.0 *). This corrected chromaticity signal is used to create a "target color chromaticity signal" (u.sub.0h *, v.sub.0h *) which is used to convert the entire color plane. A "pointed color chromaticity signal setting circuit" creates the converted chromaticity signal (u.sub.0 *, v.sub.0 *). A "target color chromaticity signal setting circuit" is used to create the target color chromaticity signal (u.sub.0h *, v.sub.0h *).
A particular area of color space can be affected by a "target color chromaticity signal" which affects certain points to a greater extent if these points are spaced closely to a particular target point that is chosen by the "pointed color chromaticity signal setting circuit." In other words, a single rectangular coordinate point is chosen as the center of the target area, and the color adjustment area has all of its multiple points affected to a certain degree, but the points most closely spaced to the center of that adjustment area are most affected. The Yumiba device can be used as an instantaneous color adjustment device (e.g., for a color TV or a color monitor).
U.S. Pat. No. 5,583,666 (by Ellson) discloses a method for transforming an input color space to an output color space where each of a plurality of specified colors or color regions are constrained to be transformed by one or more explicitly specified color calibration or color enhancement strategies. The constraints are applied to a subset of the points in the input color space that specifies the transform used to create the corresponding points in the output color space. The remainder of the points are then transformed by a mapping strategy that preserves color continuity. In the preferred embodiment, the mapping strategy is a computer graphics geometric morphing technique. Also in the preferred embodiment, the color transformation is implemented using multi-dimensional look-up tables.
The example discussed in Ellson's preferred embodiment takes an RGB signal used for a color monitor and converts it to a signal useful for a Kodak XL7700 color printer. Using this example, one of the strategies is to maintain some of the colors, such as flesh colors or grass colors of photographs, so that these color shades do not change from the input color space to the output color space. The subset of points that will maintain these flesh tones or grass tones will be such that the specific points will not move very much, or will not move at all, when comparing the input color space to the output color space. On the other hand, another subset of the points will move points in the input color space to the output color space so that saturated colors or primary colors maintain the proper "look" for output by the printer (i.e., the output color space) as compared to the proper "look" for the output by the color monitor (i.e., the input color space). The method used is shown in a flow chart on FIG. 4, in which more than one subset of input color values is transformed (per subset) to appropriate output color values. After that occurs, a final subset is created that contains all of the "remaining" input color values (i.e., those values that were not previously defined as being part of one of the controlling subsets). Then a color transform is created for these remaining input color values which will preserve continuity between the other subsets that specify each input point and output point. The final step is to implement a combined transform for all of the points.
FIG. 5 of Ellson shows a description of various mapping strategies, which show a point constraint, line constraint, surface constraint, and volume constraint. These different types of constraints are used for different situations. For example, a point constraint could be used for a single color, such as a skin tone. A surface constraint could be used to constrain the surface of the "color gamut," in which the term "gamut" refers to the range of colors that can be represented or displayed at a particular stage in the hardware system.
The way that input colors are assigned to the color space is to use a lattice in three dimensions, which corresponds to the three-dimensional space of three different colors (e.g., the primary colors). Each input point is assigned a three-dimensional number that corresponds to one of the nodes in the lattice. If a finer resolution is required, then an input point can be assigned a location that is interpolated between lattice nodes. If the output color space is of the CIELAB specification, then each node of the lattice would have an associated L*a*b* coordinate. The nodes that are contained in the set of constrained colors are tagged to be fixed nodes, and their coordinates are determined depending upon the selected color mapping strategy. The initial coordinates of the remaining unconstrained nodes in the lattice can either be set to the color value of a node in the input color space or can be interpolated from a subset of the constrained points.
One major consideration is to maintain continuity and smoothness between nearby color values when using the color mapping function. The initial node coordinates will not generally satisfy the continuity and smoothness conditions because of the use of different color mapping strategies for different subsets of constrained colors. To restore the desired continuity and smoothness, a "cost function" is defined which is a quantitative measure of the irregularity of the node lattice. By analogy, the cost function is defined as the net force on a mass connected by a system of mechanical springs to nearby masses. In the preferred embodiment, the cost function for each node is a function of the color difference which is represented by the length of the connections between nodes and their "nearest" and "second-nearest" neighbor nodes. The cost function of each node is, by analogy, the magnitude of the net force upon the corresponding mass imposed by the connecting springs. Since the rest lengths of the springs vary smoothly, the lowest cost positions of the masses will also have smoothly varying spacings. This will correspond to smoothly varying output color differences.
To determine the minimum cost node coordinates, the total cost is calculated for the current node coordinates. This total cost is then compared to the convergence requirement (which is not specified in this patent). If convergence is not achieved, the node coordinates are changed in proportion to the local vector value of the cost function. The mass is moved as a function of the net force applied according to the conventional mechanical model. When convergence is reached, the final note coordinates are recorded in output space. The final node coordinates effectively comprise a multi-dimensional look-up table that can be used to calculate the color value corresponding to each input color value, subject to the quantization limit of the output device.
In the example of Ellson's FIG. 11, the RGB input color space is divided into three subsets. The first subset is the collection of the most saturated color values. The second subset is a collection of relatively unsaturated color values that are commonly found in photographic scenes. The remaining subset comprises the remaining points that are mapped in a manner that preserves continuity between the first two subsets.
U.S. Pat. No. 5,539,540 (by Spaulding) discloses a method for transforming an input color space to an output color space where each of a plurality of specified color attributes grouped by subsets are transformed by a specific transform each, and the remaining input colors are transformed to a certain extent while being constrained by "boundary values" based upon the previously-defined subset values. The precise manner in which the "boundary values" are chosen is not described in detail. "Gamut boundaries" of specific types of equipment are mentioned which, however, are not the same thing as the "boundary values" of the above-noted transformations. In the preferred embodiment, the neutral input color values are extracted from the input color space. This is used as the first subset of input color values. The second subset of input color values in the preferred embodiment comprise highly saturated input color values. The third and final subset of input color values are the remaining values that were not defined in the previous subsets. After all of these values have been divided into respective subsets, all the input color values are transformed by the individual transforms specified for each subset.
In one example of the preferred embodiment, the hue angles of the primary colors are shifted to account for the differences between the input apparatus (e.g., such as a color monitor) and the output apparatus (e.g., such as a Kodak XL7700 thermal color printer). This Spaulding patent shows how the hue angles can be either fully shifted or partially shifted to adjust the hue angles from the input apparatus to the output apparatus. A general equation is provided, although in the preferred embodiment there will be saturation compression of the primary colors, since the printer's gamut boundary is smaller than the color monitor's gamut boundary.
Spaulding's preferred embodiment discloses some equations to perform saturation correction as a function of the input color value, and also shows equations for performing lightness correction as a function of the input color value. In Spaulding, the hue, saturation, and lightness shifts for each of the six primary colors can be individually adjusted, thereby giving eighteen degrees of freedom. The RGB input color space is divided into three subsets. The first subset is the collection of the most saturated color values. The second subset (in one example) is a collection of relatively unsaturated color values of the type commonly found in photographic scenes. The final subset comprises the remaining colors that are mapped in a manner to preserve continuity between the first two subsets. In this regard, this example in Spaulding is almost identical to the above-discussed Ellson patent.
It would be very desirable to create a warping/morphing method to transform color data (in n-dimensions) so that only selected regions of the n-space are modified. It would also be desirable to provide a warping/morphing method in which the transform is derived from a set of training points that define the transform output for selected points in the transform input space. It would further be desirable to provide a warping/morphing method in which a training point that also comprises an input point that is to be transformed will create an output point that becomes defined exactly by that training point and its associated vector. Finally, it would be desirable to provide a warping/morphing method of transforming color data such that the effects of a training point are generally localized to that training point.